package com.zyl.blog.common.domain.data.bean;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * IP地理信息实体类（基于百度qifu-api接口设计）
 * @version v1.0
 * @ProjectName: Personal_Blog_Server
 * @Package: com.zyl.blog.common.domain.data.bean
 * @ClassName: Ip
 * @Description:
 * @Author FinalFantasy
 * @Date 2025/8/11-16:12
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
public class Ip {
    /**
     * IP地址
     */
    private String ip;

    /**
     * 大洲
     */
    private String continent;

    /**
     * 国家
     */
    private String country;

    /**
     * 省份
     */
    @JsonProperty("prov")
    private String province;

    /**
     * 城市
     */
    private String city;

    /**
     * 区县
     */
    private String district;

    /**
     * 邮政编码
     */
    private String zipcode;

    /**
     * 所有者
     */
    private String owner;

    /**
     * 运营商
     */
    private String isp;

    /**
     * 行政区划编码
     */
    private String adcode;

    /**
     * 错误信息
     */
    private String errorMsg;

    /**
     * 获取完整地理位置描述（中文）
     */
    public String getFullLocation() {
        StringBuilder sb = new StringBuilder();
        if (country != null && !country.isEmpty()) {
            sb.append(country);
        }
        if (province != null && !province.isEmpty()) {
            sb.append(" - ").append(province);
        }
        if (city != null && !city.isEmpty()) {
            sb.append(" - ").append(city);
        }
        if (district != null && !district.isEmpty()) {
            sb.append(" - ").append(district);
        }
        return !sb.isEmpty() ? sb.toString() : "未知位置";
    }

    /**
     * 检查IP信息是否有效
     */
    public boolean isValid() {
        return ip != null && !ip.isEmpty() && errorMsg == null;
    }
}
